﻿2026-06-21T11:57:03.1481902Z ##[group]Run cargo nextest run --workspace --no-fail-fast -E '(package(spt-daemon) & kind(test) & binary(/^(attach|brain_swap|broker|budget|daemon_e2e|daemon_lifecycle_real_brain|digest|dispatch|driven_by_selfheal|handoff|idempotent|inject_control_wedge|input_ack_deadlock|resume|shellchan|two_origin_spanning|twohost)$/)) | (package(spt) & kind(test) & binary(/^(attach_wedge_e2e|bind_cwd_project_e2e|brain_respawn_rename|brain_restart_psyche_dup_e2e|brain_split|brain_survive|dummy_harness_e2e|gateway_owner_shell_e2e|job_escape_e2e|livehost_bootgate_e2e|livehost_bootrace_e2e|livehost_nonresident_e2e|livehost_psyche_fail_e2e|n1_pairing|oneliner_e2e|resume_template_e2e|unhost_psyche_reap_e2e)$/)) | (package(spt-term) & kind(test))'
2026-06-21T11:57:03.1485171Z [36;1mcargo nextest run --workspace --no-fail-fast -E '(package(spt-daemon) & kind(test) & binary(/^(attach|brain_swap|broker|budget|daemon_e2e|daemon_lifecycle_real_brain|digest|dispatch|driven_by_selfheal|handoff|idempotent|inject_control_wedge|input_ack_deadlock|resume|shellchan|two_origin_spanning|twohost)$/)) | (package(spt) & kind(test) & binary(/^(attach_wedge_e2e|bind_cwd_project_e2e|brain_respawn_rename|brain_restart_psyche_dup_e2e|brain_split|brain_survive|dummy_harness_e2e|gateway_owner_shell_e2e|job_escape_e2e|livehost_bootgate_e2e|livehost_bootrace_e2e|livehost_nonresident_e2e|livehost_psyche_fail_e2e|n1_pairing|oneliner_e2e|resume_template_e2e|unhost_psyche_reap_e2e)$/)) | (package(spt-term) & kind(test))'[0m
2026-06-21T11:57:03.1549030Z shell: C:\Program Files\PowerShell\7\pwsh.EXE -command ". '{0}'"
2026-06-21T11:57:03.1549249Z env:
2026-06-21T11:57:03.1549375Z   SPT_REGISTRY_BUSY_TIMEOUT_MS: 30000
2026-06-21T11:57:03.1549541Z ##[endgroup]
2026-06-21T11:57:07.5998502Z     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.57s
2026-06-21T11:57:23.4986631Z ────────────
2026-06-21T11:57:23.4987008Z  Nextest run ID 36783b89-3746-4d9c-85e9-13cf0ee2f5a5 with nextest profile: default
2026-06-21T11:57:23.4987309Z     Starting 91 tests across 39 binaries (48 binaries skipped)
2026-06-21T11:57:30.3277680Z         PASS [   6.829s] ( 1/91) spt::attach_wedge_e2e attach_wedge_dead_child_plus_dropped_pump_does_not_wedge_the_broker
2026-06-21T11:57:32.1809929Z         PASS [   1.853s] ( 2/91) spt::bind_cwd_project_e2e endpoint_run_records_cwd_and_appears_under_its_project
2026-06-21T11:57:46.5343746Z         PASS [  14.353s] ( 3/91) spt::brain_respawn_rename brain_respawns_onto_applied_bytes_after_in_place_rename
2026-06-21T11:58:00.4421562Z         PASS [  13.908s] ( 4/91) spt::brain_restart_psyche_dup_e2e brain_restart_leaves_exactly_one_psyche_per_endpoint
2026-06-21T11:58:07.6447362Z         PASS [   7.203s] ( 5/91) spt::brain_split broker_survives_brain_kill_and_respawns_it
2026-06-21T11:58:14.9110929Z         PASS [   7.266s] ( 6/91) spt::brain_split seed_anchor_survives_brain_cycle
2026-06-21T11:58:22.7599624Z         PASS [   7.849s] ( 7/91) spt::brain_survive pty_and_quic_survive_brain_process_restart_onto_swapped_binary
2026-06-21T11:58:31.8285807Z         PASS [   9.069s] ( 8/91) spt::dummy_harness_e2e endpoint_run_attach_awaits_online_before_attaching
2026-06-21T11:58:34.8732973Z         PASS [   3.045s] ( 9/91) spt::dummy_harness_e2e endpoint_run_brings_up_a_long_lived_dummy_harness_and_rc_attaches
2026-06-21T11:58:35.5287916Z         PASS [   0.655s] (10/91) spt::gateway_owner_shell_e2e gateway_typed_owner_owns_a_shell_on_every_path_keyed_on_id
2026-06-21T11:58:40.8081267Z         PASS [   5.279s] (11/91) spt::job_escape_e2e win::cold_start_daemon_escapes_kill_on_close_job_via_wmi
2026-06-21T11:58:43.5600908Z         PASS [   2.752s] (12/91) spt::job_escape_e2e win::wmi_daemon_run_has_no_conhost_window
2026-06-21T11:58:53.1155716Z         PASS [   9.555s] (13/91) spt::livehost_bootgate_e2e cold_start_does_not_revive_a_sessionless_online_latched_perch
2026-06-21T11:59:14.0077347Z         PASS [  20.892s] (14/91) spt::livehost_bootrace_e2e netless_online_live_agent_is_hosted_by_the_real_daemon_brain
2026-06-21T11:59:26.7246269Z         PASS [  12.717s] (15/91) spt::livehost_nonresident_e2e online_live_agent_with_fast_exiting_psyche_stamps_parent_and_clears_phantom
2026-06-21T11:59:33.6111444Z         PASS [   6.886s] (16/91) spt::livehost_psyche_fail_e2e online_live_agent_with_missing_psyche_binary_stamps_a_harness_reachable_error
2026-06-21T11:59:33.6233431Z         PASS [   0.012s] (17/91) spt::n1_pairing new_brain_serves_against_old_broker
2026-06-21T11:59:33.6458900Z         PASS [   0.023s] (18/91) spt::oneliner_e2e at_logon_task_launches_daemon_in_background_not_foreground
2026-06-21T11:59:33.6516515Z         PASS [   0.006s] (19/91) spt::oneliner_e2e install_script_against_staged_release
2026-06-21T11:59:40.7912954Z         PASS [   7.140s] (20/91) spt::resume_template_e2e endpoint_run_resume_selects_resume_template_in_recorded_cwd
2026-06-21T11:59:53.9819634Z         PASS [  13.191s] (21/91) spt::unhost_psyche_reap_e2e endpoint_stop_reaps_the_hosted_psyche_process
2026-06-21T11:59:54.1461921Z         PASS [   0.164s] (22/91) spt-daemon::attach attach_registers_remote_drive_detection
2026-06-21T11:59:54.3196739Z         PASS [   0.173s] (23/91) spt-daemon::attach attach_survives_target_brain_restart_exactly_once
2026-06-21T11:59:54.3828318Z         PASS [   0.063s] (24/91) spt-daemon::attach broker_spawns_the_pty_child_in_the_requested_cwd
2026-06-21T11:59:54.4554771Z         PASS [   0.073s] (25/91) spt-daemon::attach controller_restart_with_viewer_no_displace_and_viewer_survives
2026-06-21T11:59:54.5128120Z         PASS [   0.057s] (26/91) spt-daemon::attach controller_viewer_matrix_and_loud_take
2026-06-21T11:59:54.5372775Z         PASS [   0.024s] (27/91) spt-daemon::attach handoff_seeds_resume_cursor_and_resubscribes_for_resume
2026-06-21T11:59:54.6106548Z         PASS [   0.073s] (28/91) spt-daemon::attach local_attach_via_loopback_conn_rides_the_same_pump
2026-06-21T11:59:54.6908247Z         PASS [   0.080s] (29/91) spt-daemon::attach loopback_attach_to_a_prepopulated_ring_delivers_without_deadlock
2026-06-21T11:59:54.7482775Z         PASS [   0.057s] (30/91) spt-daemon::attach loopback_self_dial_is_refused_local_uses_fallback_transport
2026-06-21T11:59:54.7747728Z         PASS [   0.026s] (31/91) spt-daemon::attach re_serve_resets_resume_cursor_after_a_pre_attached_consume
2026-06-21T11:59:54.9084793Z         PASS [   0.134s] (32/91) spt-daemon::attach remote_attach_drives_a_real_pty_cross_daemon
2026-06-21T11:59:54.9637663Z         PASS [   0.055s] (33/91) spt-daemon::attach resize_is_controller_exclusive
2026-06-21T11:59:55.0624676Z         PASS [   0.099s] (34/91) spt-daemon::attach same_origin_re_subscribe_does_not_displace
2026-06-21T11:59:55.1962667Z         PASS [   0.134s] (35/91) spt-daemon::attach spt_hosted_bringup_then_cross_node_attach_drives_the_pty
2026-06-21T11:59:57.4974096Z         PASS [   2.301s] (36/91) spt-daemon::attach wedged_viewer_does_not_stall_controller
2026-06-21T11:59:57.5364870Z         PASS [   0.039s] (37/91) spt-daemon::brain_swap brain_only_update_swaps_logic_with_zero_endpoint_interruption
2026-06-21T11:59:57.5683991Z         PASS [   0.032s] (38/91) spt-daemon::broker ack_false_input_suppresses_applied_frame
2026-06-21T11:59:57.5983532Z         PASS [   0.030s] (39/91) spt-daemon::broker broker_hosts_pty_child_streams_output_and_accepts_input
2026-06-21T11:59:57.6570936Z         PASS [   0.059s] (40/91) spt-daemon::broker controller_writer_reorder_consumer_view_stays_monotonic_and_session_live
2026-06-21T11:59:57.6932117Z         PASS [   0.036s] (41/91) spt-daemon::broker dead_session_subscribe_does_not_hang
2026-06-21T11:59:57.7237203Z         PASS [   0.030s] (42/91) spt-daemon::broker endpoint_keyed_inject_reaches_hosted_pty
2026-06-21T11:59:57.8633608Z         PASS [   0.140s] (43/91) spt-daemon::broker exactly_once_preserved_on_no_ack_path
2026-06-21T11:59:57.9021500Z         PASS [   0.039s] (44/91) spt-daemon::broker spawn_env_reaches_child
2026-06-21T11:59:57.9503769Z         PASS [   0.048s] (45/91) spt-daemon::broker wall_b_endpoint_run_env_then_send_reaches_pty
2026-06-21T11:59:57.9582528Z         PASS [   0.008s] (46/91) spt-daemon::budget measure_dormant_seat_budget
2026-06-21T12:00:01.6439099Z         PASS [   3.686s] (47/91) spt-daemon::daemon_e2e daemon_hosts_lifecycle_and_survives_brain_restart
2026-06-21T12:00:07.9655413Z         PASS [   6.322s] (48/91) spt-daemon::daemon_lifecycle_real_brain real_brain_process_hosts_the_psyche_for_an_online_live_endpoint
2026-06-21T12:00:08.1608129Z         PASS [   0.195s] (49/91) spt-daemon::digest harness_hosted_digest_projects_and_pushes_deltas
2026-06-21T12:00:08.1716735Z         PASS [   0.011s] (50/91) spt-daemon::dispatch classify_routes_a_node_label_feed_to_registry
2026-06-21T12:00:08.3754864Z         PASS [   0.204s] (51/91) spt-daemon::dispatch dispatcher_applies_a_notif_feed_undriven
2026-06-21T12:00:08.8687478Z         PASS [   0.493s] (52/91) spt-daemon::dispatch dispatcher_funnels_wan_messages_undriven
2026-06-21T12:00:09.1524348Z         PASS [   0.284s] (53/91) spt-daemon::dispatch dispatcher_serves_a_cross_node_shell_link
2026-06-21T12:00:09.2884215Z         PASS [   0.136s] (54/91) spt-daemon::dispatch dispatcher_serves_a_file_fetch_undriven
2026-06-21T12:00:09.4724682Z         PASS [   0.184s] (55/91) spt-daemon::dispatch dispatcher_serves_a_remote_drive_attach_undriven
2026-06-21T12:00:09.6660420Z         PASS [   0.193s] (56/91) spt-daemon::dispatch dispatcher_serves_a_subnet_serve_probe
2026-06-21T12:00:10.9231157Z         PASS [   1.257s] (57/91) spt-daemon::dispatch dispatcher_serves_a_sync_pull_undriven
2026-06-21T12:00:11.0590615Z         PASS [   0.136s] (58/91) spt-daemon::dispatch dispatcher_serves_an_update_pull_undriven
2026-06-21T12:00:11.3269872Z         PASS [   0.268s] (59/91) spt-daemon::dispatch dispatcher_surfaces_a_remote_won_notif_at_the_winning_node
2026-06-21T12:00:11.5098829Z         PASS [   0.183s] (60/91) spt-daemon::dispatch dispatcher_survives_an_unknown_stream
2026-06-21T12:00:12.0215905Z         PASS [   0.512s] (61/91) spt-daemon::driven_by_selfheal gap_a_live_session_controller_by_is_ambiguous_so_reconcile_must_not_clear
2026-06-21T12:00:12.0539914Z         PASS [   0.032s] (62/91) spt-daemon::driven_by_selfheal gap_b_sessionless_perch_reconcile_offlines_and_clears_driven_by
2026-06-21T12:00:12.2640019Z         PASS [   0.210s] (63/91) spt-daemon::handoff brain_restart_survives_gaplessly_with_fresh_gen_start
2026-06-21T12:00:12.3142502Z         PASS [   0.050s] (64/91) spt-daemon::idempotent pty_writes_are_exactly_once_across_brain_crashes
2026-06-21T12:00:15.5055468Z         PASS [   3.191s] (65/91) spt-daemon::inject_control_wedge a_backed_up_controller_does_not_wedge_the_session
2026-06-21T12:00:18.9521230Z         PASS [   3.447s] (66/91) spt-daemon::inject_control_wedge a_journaled_input_wedge_does_not_starve_a_concurrent_rc_attach
2026-06-21T12:00:31.4024756Z         PASS [  12.450s] (67/91) spt-daemon::inject_control_wedge g1_choreography_happy_path_payload_reaches_pty_and_controller_keeps_control
2026-06-21T12:00:32.0446307Z         PASS [   0.642s] (68/91) spt-daemon::inject_control_wedge g2_no_commit_deadline_faults_binary_and_does_not_wedge_controller_input
2026-06-21T12:00:32.8101446Z         PASS [   0.765s] (69/91) spt-daemon::inject_control_wedge g3_content_free_ping_never_duplicates_operator_keystrokes_into_binary
2026-06-21T12:00:33.4307857Z         PASS [   0.621s] (70/91) spt-daemon::inject_control_wedge g4_translation_child_is_reaped_no_zombie_after_session_down
2026-06-21T12:00:33.8831093Z         PASS [   0.452s] (71/91) spt-daemon::inject_control_wedge injecting_a_large_payload_into_a_stdin_ignoring_child
2026-06-21T12:00:59.0404587Z         FAIL [  25.157s] (72/91) spt-daemon::inject_control_wedge p0_paste_wedge_parked_write_does_not_starve_attach_or_wedge_broker
2026-06-21T12:00:59.0405169Z   stdout ───
2026-06-21T12:00:59.0405243Z 
2026-06-21T12:00:59.0405295Z     running 1 test
2026-06-21T12:00:59.0405509Z     test p0_paste_wedge_parked_write_does_not_starve_attach_or_wedge_broker ... FAILED
2026-06-21T12:00:59.0405911Z 
2026-06-21T12:00:59.0405962Z     failures:
2026-06-21T12:00:59.0406029Z 
2026-06-21T12:00:59.0406076Z     failures:
2026-06-21T12:00:59.0406246Z         p0_paste_wedge_parked_write_does_not_starve_attach_or_wedge_broker
2026-06-21T12:00:59.0406418Z 
2026-06-21T12:00:59.0406592Z     test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 9 filtered out; finished in 25.14s
2026-06-21T12:00:59.0406824Z 
2026-06-21T12:00:59.0406885Z   stderr ───
2026-06-21T12:00:59.0407014Z     PUMP_IPC_READER: spawned
2026-06-21T12:00:59.0407159Z     PUMP_IPC_READER: spawned
2026-06-21T12:00:59.0407293Z     PUMP_IPC_READER: spawned
2026-06-21T12:00:59.0407968Z     PUMP_IPC_READER: exited
2026-06-21T12:00:59.0408809Z     === P0 PASTE-WEDGE GATE: pumped=1221 keystroke_accepted=true concurrent_attach_subscribed=true attach_received_output=false backpressured=false backpressure_after_stop=None (fixed = subscribed+got_output+keystroke_accepted true; pre-fix: parked dispatch thread → subscribed=false / no output) ===
2026-06-21T12:00:59.0409504Z 
2026-06-21T12:00:59.0409789Z     thread 'p0_paste_wedge_parked_write_does_not_starve_attach_or_wedge_broker' (123320) panicked at crates\spt-daemon\tests\inject_control_wedge.rs:1996:5:
2026-06-21T12:00:59.0410763Z     the concurrent attach must actually RECEIVE PTY output from the flooding child (not just liveness) while the paste write is parked — output delivery does not go through the input writer, so receiving bytes proves the dispatch serviced this attach despite the parked write.
2026-06-21T12:00:59.0411483Z     note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
2026-06-21T12:00:59.0411743Z 
2026-06-21T12:00:59.5525877Z         PASS [   0.512s] (73/91) spt-daemon::inject_control_wedge w5_a1_locally_driven_session_reports_controller_by_none
2026-06-21T12:01:03.7846241Z         FAIL [   4.232s] (74/91) spt-daemon::inject_control_wedge w5_a2_abandoned_remote_controller_idle_session_keeps_controller_by_some
2026-06-21T12:01:03.7846803Z   stdout ───
2026-06-21T12:01:03.7846880Z 
2026-06-21T12:01:03.7846930Z     running 1 test
2026-06-21T12:01:03.7847167Z     test w5_a2_abandoned_remote_controller_idle_session_keeps_controller_by_some ... FAILED
2026-06-21T12:01:03.7847392Z 
2026-06-21T12:01:03.7847438Z     failures:
2026-06-21T12:01:03.7847511Z 
2026-06-21T12:01:03.7847558Z     failures:
2026-06-21T12:01:03.7847744Z         w5_a2_abandoned_remote_controller_idle_session_keeps_controller_by_some
2026-06-21T12:01:03.7847920Z 
2026-06-21T12:01:03.7848083Z     test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 9 filtered out; finished in 4.22s
2026-06-21T12:01:03.7848307Z 
2026-06-21T12:01:03.7848381Z   stderr ───
2026-06-21T12:01:03.7848503Z     PUMP_IPC_READER: spawned
2026-06-21T12:01:03.7848745Z     PUMP_IPC_READER: spawned
2026-06-21T12:01:03.7848895Z     PUMP_IPC_READER: spawned
2026-06-21T12:01:03.7849629Z     === W5 A2 CHARACTERIZATION: subscribed=true driven_after_attach=Some("09bf14060b6bcc1a102eda627df0c673bf4d9175bfd617da3cdad6a488cb8494") cby_attached=Some(Some("09bf14060b6bcc1a102eda627df0c673bf4d9175bfd617da3cdad6a488cb8494")) session_still_listed=true cby_after_abandon=Some(None) driven_after_abandon=None ===
2026-06-21T12:01:03.7850999Z     === W5 A2 VERDICT: controller_by==None sufficient for Gap A? true (false ⇒ wedged slot stays Some(origin) ⇒ the lost-detach fix must be broker-side eviction — a reconcile `controller_by==None` check alone does NOT catch this; it only catches A1 / Gap B) ===
2026-06-21T12:01:03.7851538Z 
2026-06-21T12:01:03.7851835Z     thread 'w5_a2_abandoned_remote_controller_idle_session_keeps_controller_by_some' (209892) panicked at crates\spt-daemon\tests\inject_control_wedge.rs:1671:9:
2026-06-21T12:01:03.7852960Z     A2: an abandoned remote controller on an IDLE session must STILL read controller_by == Some(origin) (the slot does not self-clear without output-drain-evict or a clean EOF) — proving controller_by==None is NOT a sufficient Gap-A signal for the production wedged-pump case; the lost-detach clear must be broker-side eviction. Got: Some(None)
2026-06-21T12:01:03.7854031Z     note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
2026-06-21T12:01:03.7854223Z 
2026-06-21T12:01:35.8023611Z         PASS [  32.018s] (75/91) spt-daemon::input_ack_deadlock input_flood_through_serve_attach_does_not_deadlock_broker
2026-06-21T12:01:38.2212865Z         PASS [   2.419s] (76/91) spt-daemon::resume cold_start_resumes_all_sessions_from_the_broker_cursor
2026-06-21T12:01:42.5958679Z         PASS [   4.375s] (77/91) spt-daemon::resume resume_below_ring_floor_clamps_forward_without_gap_error
2026-06-21T12:01:43.8821445Z         PASS [   1.286s] (78/91) spt-daemon::resume resume_mode_brain_spawning_new_sessions_delivers_each
2026-06-21T12:01:44.1693061Z         PASS [   0.287s] (79/91) spt-daemon::shellchan hung_shell_stalls_no_other_owner
2026-06-21T12:01:44.3299680Z         PASS [   0.161s] (80/91) spt-daemon::shellchan stdin_receipt_delivers_spooled_frames_exactly_once
2026-06-21T12:01:44.4921860Z         PASS [   0.162s] (81/91) spt-daemon::two_origin_spanning one_source_two_consumers_spans_and_merges
2026-06-21T12:01:44.5024774Z         PASS [   0.010s] (82/91) spt-daemon::twohost two_host_ladder_role_a
2026-06-21T12:01:44.5113593Z         PASS [   0.009s] (83/91) spt-daemon::twohost two_host_ladder_role_b
2026-06-21T12:01:44.5412655Z         PASS [   0.030s] (84/91) spt-term::dsr conpty_output_not_withheld_under_the_drain
2026-06-21T12:01:44.5689851Z         PASS [   0.028s] (85/91) spt-term::dsr drain_forwards_child_output
2026-06-21T12:01:44.6062378Z         PASS [   0.037s] (86/91) spt-term::inject ctrl_c_interrupts_the_child
2026-06-21T12:01:44.6525255Z         PASS [   0.046s] (87/91) spt-term::inject send_line_reaches_child_and_preserves_order
2026-06-21T12:01:45.6744345Z         PASS [   1.022s] (88/91) spt-term::stream bounded_backpressure_stalls_an_unconsumed_reader
2026-06-21T12:01:45.7030772Z         PASS [   0.029s] (89/91) spt-term::stream delivers_every_value_under_resize
2026-06-21T12:01:45.7210166Z         PASS [   0.018s] (90/91) spt-term::surface resize_under_load_does_not_hang_or_panic
2026-06-21T12:01:45.7399343Z         PASS [   0.019s] (91/91) spt-term::winspawn pty_spawns_a_cmd_script_via_cmd_wrap
2026-06-21T12:01:45.7400101Z ────────────
2026-06-21T12:01:45.7400332Z      Summary [ 262.242s] 91 tests run: 89 passed, 2 failed, 0 skipped
2026-06-21T12:01:45.7401700Z         FAIL [  25.157s] (72/91) spt-daemon::inject_control_wedge p0_paste_wedge_parked_write_does_not_starve_attach_or_wedge_broker
2026-06-21T12:01:45.7402693Z         FAIL [   4.232s] (74/91) spt-daemon::inject_control_wedge w5_a2_abandoned_remote_controller_idle_session_keeps_controller_by_some
2026-06-21T12:01:45.7433241Z error: test run failed
2026-06-21T12:01:45.8100110Z ##[error]Process completed with exit code 1.
